import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Clase que crea los objetos osos polares en el juego segun se requieran y contiene las caracteristicas de los mismos
 * 
 * @author Omar Espino
 * @version 20/11/2014
 */
public class Osopolar extends Enemigo
{
    
    private GreenfootImage []osoDerecha;
    private GreenfootImage []osoIzquierda;
    private SimpleTimer reloj1;
    private SimpleTimer relojBolaNieve;
    private int numImagen;
    private final int DERECHA=1;
    private final int IZQUIERDA=0;
    private int sangre;
    
    /**constructor de la clase */
    /**@param recibe un entero int como parametro que sera la direccion en que estara viendo al crearse el objeto*/
    public Osopolar(int unaDireccion)
    {
        osoDerecha=new GreenfootImage[3];
        osoIzquierda=new GreenfootImage[3];

        GreenfootImage osoDer1=new GreenfootImage("osoDer1.png");
        GreenfootImage osoDer2=new GreenfootImage("osoDer2.png");
        GreenfootImage osoDer3=new GreenfootImage("osoDer3.png");

        GreenfootImage osoIzq1=new GreenfootImage("osoIzq1.png");
        GreenfootImage osoIzq2=new GreenfootImage("osoIzq2.png");
        GreenfootImage osoIzq3=new GreenfootImage("osoIzq3.png");

        osoDerecha[0]=osoDer1;
        osoDerecha[1]=osoDer2;
        osoDerecha[2]=osoDer3;

        osoIzquierda[0]=osoIzq1;
        osoIzquierda[1]=osoIzq2;
        osoIzquierda[2]=osoIzq3;
       
        this.setDireccion(unaDireccion);
        this.setVelocidad(10);
        
        numImagen=0;
        reloj1=new SimpleTimer();
        reloj1.mark();
        relojBolaNieve=new SimpleTimer();
        
        sangre=100;
    }
    /**metodo principal en el cual actuaran los osos polares*/
    public void act() 
    {
        if(getDireccion()==IZQUIERDA)
        {
            if(reloj1.millisElapsed()>100)
            {
                setImage(osoDerecha[numImagen]) ;  
                setLocation(getX()+getVelocidad(),getY());
                reloj1.mark();

                if(numImagen<2)
                {
                    numImagen++;  
                }
                else
                {
                    numImagen=0;
                }

                if(isTouching(Baseder.class))
                {
                    setDireccion(DERECHA);
                }
            }

        }

        if(getDireccion()==DERECHA)
        {
            if(reloj1.millisElapsed()>100)
            {
                setImage(osoIzquierda[numImagen]) ;  
                setLocation(getX()-getVelocidad(),getY());
                reloj1.mark();
                if(numImagen<2)
                {
                    numImagen++;  
                }
                else
                {
                    numImagen=0;
                }

                if(isTouching(Baseizq.class))
                {
                    setDireccion(IZQUIERDA);
                }
            }
        }
      
        arrojaBolaNieve();
    }   
    /**metodo que regresa la sangre */
    /**@return regresa un entero int con la sangre actual del oso polar*/
    public int getSangre()
    {
    return sangre;       
    }
    /**metodo que modifica la sangre */
    /**@param recibe un entero int el daño ocasionado al oso polar*/
    public void setSangre(int unDaño)
    {
        sangre-=unDaño;
    }
    /**metodo que hace que el oso polar arroje una bola de nieve*/
     public void arrojaBolaNieve()
    {
        if(relojBolaNieve.millisElapsed()>2000)
        {  
           Bolanieve unaBola=new Bolanieve(getDireccion());
           if(getDireccion()==IZQUIERDA)
           {
               getWorld().addObject(unaBola,getX()+15,getY());
           }
           else
           {
               getWorld().addObject(unaBola,getX()-15,getY());
           }
               relojBolaNieve.mark();
        }
    }
}
